查看原文
其他

《软件供应商手册:SBOM的生成和提供》解读

代码卫士 2022-06-21

The following article is from 信息通信软件供应链安全社区 Author 奇安信

软件供应商手册:

SBOM的生成和提供

董国伟 奇安信科技集团股份有限公司



摘要:








本手册由美国国家电信和信息管理局(NTIA)格式化与工具工作组于2021年11月27日发布,旨在为软件供应商提供软件物料清单(SBOM)生成和交付方面的指导。手册以SBOM生成的四步骤流程为主线,重点说明了在软件构建(Build)前、构建中和构建后等各阶段构造SBOM时的特点或应注意事项,以及目前常用的SBOM验证方法。整体流程的完整性和对各阶段应重点关注问题的讨论是本手册的主要亮点。手册可为我国软件生产企业或个人在SBOM生成和构造等方面提供一定的指导和借鉴。









背景解读:





近年来,全球软件供应链安全攻击事件持续高发,且危害越来越大,特别是2020年底爆发的太阳风(SolarWinds)攻击事件,使得美国更加重视自身的供应链安全防护。2021年5月12日,美总统拜登签署了“关于改善国家网络安全(EO 14028)”的行政命令,其中的第4节针对“加强软件供应链安全”提出了一系列具体要求,旨在迅速改善美国软件供应链的安全性和完整性,而其第(f)条要求,NTIA于同年7月11日前发布SBOM的最低要求。

对此,NTIA于2021年7月12日发布了《SBOM最小要素》,规定了最小要素应包括数据字段、自动化支持、实践和过程等三个方面,其中的实践和过程指为了将SBOM集成到安全开发生命周期操作中而需定义其请求的操作、生成和使用等内容,包含频率、深度、已知的未知情况(known unknowns)、分发和交付、访问控制和容错等。可以看出,SBOM的生成是将其集成到安全开发生命周期的重要一环。

11月27日发布的《软件供应商手册:SBOM生成和提供》是对最小要素中SBOM生成的进一步细致讨论和在实施层面的补充,给出了SBOM生成的一般性流程及每一步中应关注的重点。手册中关于SBOM三种数据格式(SPDX、CycloneDX、SWID)和特定名词(如“已知的未知情况”)的规定均与最小要素一脉相承。另外,根据手册中的说明,这里的软件供应商指的是商用软件、开源软件、外包软件等广义的供应商。





正文解读


通过对手册内容进行分析,作者归纳出其参考价值和指导作用主要体现在4个方面。

01

以有效性为最终目标,总结了SBOM生成的工作流程

尽管各类组织用来生成SBOM的工具和过程多种多样,但手册归纳出了这一过程的一般性工作流程模型,即通过“识别组件-获取数据-构造SBOM-验证SBOM”4个步骤,最终得到格式有效、属性合规的SBOM文件。

在上述过程中,每个步骤均有相应的技术、自动化工具、标准等进行辅助和支持,手册介绍了它们中的代表性内容,例如软件组成分析(SCA)工具、代码分析工具、SBOM格式验证工具、软件包数据交换(SPDX)标准、OWASP CycloneDX和软件组件验证(SCVS)标准等。

总体而言,本手册对于SBOM的构造和生成具有一定的指导作用,可基于其描述的流程、标准和工具等开展相关的研究工作,以增强软件产品透明度,便于进行安全分析和保障。

02

以构建为阶段划分点,讨论了SBOM构造的主要方法

手册描述了在软件构建(Build)之前、构建时和构建以后的不同时间阶段,构造SBOM时可使用的方法工具、应考虑的信息类型、相应的特点和注意事项等内容,如表1所示。

表1 不同阶段SBOM生成的对比

生成阶段

生成方法

特点/注意事项

构建前

作为版本控制系统一部分,或由挖掘产品构建管道输入的工具创建源码级SBOM

有助于关键组件的识别及在创建产品之前查找漏洞;便于构建到源文件的追溯;可能会呈现并不包含在最终可执行文件中的脆弱源码

构建时

作为构建工件自动化生成SBOM

包含更权威的组件特征、无人工输入错误、自动化SBOM签名;必须确定构建过程中生成的SBOM的格式(列举了SPDX等3种)

在构建管道或软件工厂中生成SBOM

构建管道方法容易使用,但可能需要额外的资源集成管道;软件工厂方法可解决多个开发生态系统没有一致SBOM支持的问题

从容器化过程中导出容器镜像SBOM

应汇总并识别来自所有层的所有软件的信息;应包括容器间依赖关系、构建时间、签名等

构建以后

(SBOM应包括生成时间、SBOM版本、签名等)

旧系统中使用功能;来自不同的供应商、过程和工具等的SBOM信息的生成

应补充接近工程过程的组件数据、已知的未知情况等;代码分析工具可扫描上游供应商组件的SBOM,但识别商业组件方面能力不足

非自动化系统和过程的SBOM生成

应理解SBOM中列出的组件的来源和软件标识,以及如何获取这些信息

手册对每个阶段中SBOM生成的特点或应注意方面进行了一些点上的描述,包括举例等方式,多以说明性为主,缺少统一的描述逻辑。尽管如此,通过对表中内容的分析依然可以发现:

  • 收集信息的全面性是SBOM构造的基础。识别和收集软件组件信息的全面性是首先要考虑的。手册明确了,在构建过程中生成SBOM的,需提前确定格式,即使用标准来规范待收集的内容,并且在构建后还要补充必要的信息(例如无法通过自动化手段得到的)。

  • 三个阶段的SBOM生成工作各有侧重。构建时的自动化信息收集是SBOM生成的主要方式;源码级SBOM可以作为辅助;构建之后阶段对SBOM的构造以信息(特别是来源信息)的补充和集成(多供应商SBOM)为主。

  • 自动化工具提高了SBOM构造的效率和可操作性。手册提到的工具包括:构建前使用的版本控制系统,挖掘构建管道输入的工具;构建时使用的Git,与构建系统、包管理器和持续集成(CI)服务器集成的工具,构建管道和软件工厂;构建后使用的代码分析工具等

03

以安全性为出发点,分析了SBOM应包含的内外依赖

为了使运行时依赖关系等引入漏洞的情况不成为消费者和供应商的盲点,手册强调SBOM应避免缺失对应用程序所安装的运行时依赖项、操作系统、动态链接库(DLL)、升级程序、共享库或其他包含项的描述,且描述时应避免存在歧义;另外,为了提高供应商解决相关安全问题的效率,手册明确当软件功能执行依赖于对外部服务调用时,可使用SBOM列出软件交付所需的外部服务。

内外部依赖关系是应用程序引入安全问题的重要来源之一,手册将应用的内部依赖项和外部依赖的服务作为SBOM的重要组成部分,能够帮助消费者和供应商更全面的了解应用程序,进而掌握可能引入安全问题的途径,及时采取相应缓解措施,这有利于提高软件安全防护的效率和准确性。

04

以可操作性为目的,列举了SBOM验证的工具和标准

针对SPDX、CycloneDX和SWID三种SBOM的格式正确性和完整性的检验,手册列出了相应自动化工具的链接;针对SBOM信息中声明的相关组件的识别、验证和评估等,手册提到了标准OWASP SCVS、OpenChain和软件组成分析(SCA)工具。

目前SCA工具在识别软件组成、分析软件成分、统计软件资产等方面功能明显,可有效辅助SBOM中声明组件和依赖信息的验证。但SBOM文件自身验证的工具还比较初级,并且都与特定的SBOM格式相绑定。例如手册中提到的SBOM格式验证工具,仅能够对格式的正确性和完整性进行检查,而不能检查填充SBOM字段的数据质量或准确性。相信随着SBOM相关技术的不断发展,未来此类工具的功能也会有较大的提升。





影响及趋势预判


美行政令EO 14028虽然对《SBOM最小要素》的制定进行了要求,但并未对它的使用进行强制规定。最小要素和本手册可更多的被看作是对SBOM相关方,特别是美国软件供应商的规范建议。

但另一方面,随着全球网络信息领域对软件供应链安全、SBOM重要性认知的不断提升,以及SPDX成为国际标准、《SBOM最小要素》的出台等,软件供应企业(如商用软件、外包软件)和个人(如开源软件)会越来越多主动或被动的构造并提供SBOM,本手册可以在这一方面提供流程的规范和指导,具有积极的促进作用。无论美国厂商还是全球厂商都可以从中得到启示,但手册介绍的粒度较粗,供应商应根据自身状况进一步细化后使用。

SBOM生成的自动化是构造SBOM的最终目标和提高效率的有效手段,但从手册中可以看出,目前一些类型信息的收集还难以做到,例如“已知的未知情况”、遗留系统的相关信息等,并且手册也缺少对这些的详细方法介绍;此外,依赖项漏洞是软件供应链安全风险的主要成因之一,手册中列举了几类需在SBOM中重点关注的内外部依赖关系,但并未展开系统阐述。未来应对这些问题进行进一步的研究,进而为软件供应商提供更加明确的指导。





总结及对策建议


手册归纳了SBOM生成的一般工作流程,包括“识别组件-获取数据-构造SBOM-验证SBOM”4个步骤,并以构建为阶段划分点,讨论了SBOM构造的主要方法,还重点分析了SBOM应包含的内外部依赖关系、列举了针对SBOM的验证工具和标准。基于上述情况,本文对我国的SBOM构造工作建议如下:

  • 建议国家或行业监管部门指导制定软件SBOM格式、生成和使用等方面的标准和指南,以规范该项工作;并建立有效的机制推动标准的落地、使用,引导相关自动化辅助工具的研发。

  • 建议软件供应商提高安全责任意识,根据已有的SBOM要素、生成、使用等参考资料制定满足自身和使用者需求的SBOM规范,包括但不限于组件供应者、组件名称、组件版本、依赖关系等信息内容,并在软件研发和供应过程中严格执行。

  • 建议软件使用者将SBOM列为供应商必须提供的内容,并对其提交的软件产品和SBOM进行验证,以确保两者的对应关系,从而提升软件产品的透明度,提高软件安全维护的效率和使用的安全性。


    手册原文可参考:https://www.ntia.gov/files/ntia/publications/software_suppliers_sbom_production_and_provision_-_final.pdf



SBOM系列政策文件研究由中国信通院、中国联通联合牵头,筹建单位奇安信、会员单位悬镜安全、绿盟、高伟达、比瓴、盈高科技、亚信、北银金科、孝道科技、南阳理工大学、华为支持开展,包含13篇政策文件的翻译、解读,涵盖了SBOM整体内容概述,SBOM的生成、获取、交换、共享、管理、使用等全生命周期过程,回答了关于SBOM的常见问题,以期助力社区的安全研究研讨,加速推进提升国内供应链的安全管理水平。



代码卫士试用地址:https://codesafe.qianxin.com/开源卫士试用地址:https://oss.qianxin.com



推荐阅读
在线阅读版:《2021中国软件供应链安全分析报告》全文谷歌和GitHub 联手提出新方法,提振软件供应链安全
GitHub 突然封禁受制裁俄罗斯实体的开发人员账户
速修复!这个严重的 Apache Struts RCE 漏洞补丁不完整
NPM流行包再起波澜:维护人员对俄罗斯用户发特定消息,谁来保证开源可信?
热门Ruby 库中存在严重的命令注入漏洞
PHP包管理器PEAR 中爆多个缺陷可发动供应链攻击,已潜伏15年
FIN7 正在转向密码重置和软件供应链攻击
从主流安全开发框架看软件供应链安全保障的落地
速修复!这个严重的Zlib内存损坏漏洞已存在17年!
攻击者“完全自动化”发动NPM供应链攻击
Pwn2Own大赛回顾:利用开源服务中的严重漏洞,攻陷西部数据My Cloud PR4100
Node-ipc 热门包作者投毒“社死‘’,谁来保护开源软件供应链安全?
因供应商遭不明网络攻击,丰田汽车宣布停产
Linux Netfilter 防火墙模块爆新漏洞,攻击者可获取root权限
丰田汽车顶级供应商 Denso 疑遭勒索攻击,被威胁泄露商业机密
漏洞Dirty COW:影响Linux系统以及安卓设备
第三方支付处理厂商软件有漏洞,日本美容零售商Acro 10万支付卡信息遭攻击
Linux 内核 cgroups 新漏洞可导致攻击者逃逸容器
谷歌宣布 Linux Kernel、Kubernetes 0day 漏洞奖励加倍
Apache Cassandra 开源数据库软件修复高危RCE漏洞2021年软件供应链攻击数量激增300%+
热门开源CMS平台 Umbraco 中存在多个安全漏洞,可使账户遭接管
详细分析开源软件项目 Ajax.NET Professional 中的RCE 漏洞(CVE-2021-23758)
SAP 严重漏洞可导致供应链攻击
Apache PLC4X开发者向企业下最后通牒:如不提供资助将停止支持
Apache 软件基金会:顶级项目仍使用老旧软件,补丁作用被削弱
美国商务部发布软件物料清单 (SBOM) 的最小元素(上)
美国商务部发布软件物料清单 (SBOM) 的最小元素(中)
美国商务部发布软件物料清单 (SBOM) 的最小元素(下)
NIST 发布关于使用“行政令-关键软件”的安全措施指南
NIST 按行政令关于加强软件供应链安全的要求,给出“关键软件”的定义及所含11类软件SolarWinds 攻击者再次发动供应链攻击
美国“加强软件供应链安全实践的指南” (SSDF V1.1草案) 解读来了
软件供应链安全现状分析与对策建议
“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞
流行的 NPM 包依赖关系中存在远程代码执行缺陷
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制
找到软件供应链的薄弱链条
GitHub谈软件供应链安全及其重要性
揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司开源软件漏洞安全风险分析
开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析
集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市
热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码
GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥
因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
彪马PUMA源代码被盗,称客户数据不受影响


题图:Pixabay License



作者丨奇安信  董国伟

校审丨中国信通院 杨文钰

           中国联通  贾倩倩

排版丨比瓴科技  骆玥辰


转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。




奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

    觉得不错,就点个 “在看” 或 "赞” 吧~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存